package com.fakeDYChat.common.user.service;

import com.fakeDYChat.common.user.domain.entity.User;
import com.baomidou.mybatisplus.extension.service.IService;
import com.fakeDYChat.common.user.domain.vo.resp.*;

import java.util.List;

/**
 * <p>
 * 用户表 服务类
 * </p>
 *
 * @author Tang
 * @since 2023-11-18
 */
public interface IUserService extends IService<User> {
    /**
     * 用户注册
     *
     * @param user
     * @return java.lang.Long
     * @author Tang
     * @date 2023/12/30 15:44
     **/
    Long register(User user);

    /**
     * 获取用户个人信息
     *
     * @param uid 用户id
     * @return com.fakeDYChat.common.user.domain.vo.resp.UserInfoResp
     * @author Tang
     * @date 2023/12/30 15:32
     **/
    UserInfoResp getUserInfo(Long uid);

    /**
     * 用户修改个人名称
     *
     * @param uid     用户id
     * @param newName 新用户名
     * @return void
     * @author Tang
     * @date 2023/12/30 16:54
     **/
    void modifyName(Long uid, String newName);

    /**
     * 展示用户徽章列表
     *
     * @param uid 用户id
     * @return java.util.List<com.fakeDYChat.common.user.domain.vo.resp.BadgeResp>
     * @author Tang
     * @date 2024/1/2 15:20
     **/
    List<BadgeResp> badges(Long uid);

    /**
     * 用户佩戴徽章
     *
     * @param uid 用户id
     * @param req 需要佩戴的徽章信息
     * @author Tang
     * @date 2024/1/2 19:58
     **/
    void wearingBadge(Long uid, WearingBadgeReq req);


    /**
     * 拉黑用户
     *
     * @param req 拉黑信息
     * @author Tang
     * @date 2024/1/12 20:14
     **/
    void black(BlackResp req);
}
